import { customRef } from "vue";

export default function (initValue: string, dalay: number) {
  let timer: number;
  let msg = customRef((track, trigger) => {
    // 使用 vue 提供的 customRef 定义响应式数据
    return {
      get() {
        // get 何时调用? -- msg 被读取时
        track(); // 告诉 vue 数据 msg 很重要,你要对 msg 进行持续关注,一旦 msg 变化就去更新
        return initValue;
      },
      set(v) {
        // set 何时调用? -- msg 被修改时
        // console.log('set', v);
        clearTimeout(timer);
        timer = setTimeout(() => {
          initValue = v;
          trigger(); // 通知 vue 一下数据 msg 变化了
        }, dalay);
      },
    };
  });
  return { msg };
}
